\section{Système proie-prédateur de Lotka-Volterra}

\indent Cette partie consiste à modéliser l'évolution d'une ou plusieurs populations grâce à des équations différentielles : d'abord l'équation de Malthus, puis celle de Verhulst, et enfin le système de Lotka-Volterra.

\begin{enumerate}
\item Voici les équations différentielles de Malthus et de Verhulst :
\begin{itemize}
\item Malthus : $\frac{dN(t)}{dt} = \gamma N(t)$\\
\item Verhlust : $\frac{dN(t)}{dt} = \gamma N(t)(1 - \frac{N(t)}{\kappa}), \ \gamma ,\kappa > 0$\\
\end{itemize}
\'Etudions d'abord l'équation de Malthus. $\gamma$ représente la différence entre le coefficient de naissance et le coefficient de mort.
\begin{itemize}
\item Si $\gamma > 0$, alors la population croît, ce qui est logique, car il y a plus de naissances que de morts.
\item Si $\gamma = 0$, alors la population reste constante, ce qui est logique, car il y a autant de naissances que de morts.
\item Si $\gamma < 0$, alors la population décroît, ce qui est logique, car il y a plus de morts que de naissances.\\
\end{itemize}
\indent Passons à l'équation différentielle de Verhulst. Cette équation est la même que celle de Malthus, mais avec un terme supplémentaire, introduisant une nouvelle variable $\kappa$, représentant la population d'équilibre. De plus, dans cette équation différentielle, $\gamma$ est strictement positif.\\
Plaçons nous à un instant t :
\begin{itemize}
\item Si $N(t) < \kappa$, alors la population croît puisque le terme entre parenthèses est positif.
\item Si $N(t) = \kappa$, alors la population reste constante puisque le terme entre parenthèses est nul.
\item Si $N(t) > \kappa$, alors la population décroît puisque le terme entre parenthèses est négatif.
\end{itemize}
$\kappa$ représente donc bien la population à l'équilibre. $\gamma$ représente quant à lui un coefficient de variations, car plus il est grand, plus il augmente la croissance/décroissance de la population.\\

\item Nous avons implémenté la résolution de ces deux équations dans la fonction \texttt{resolution\_eq}. Les constantes $\gamma$ et $\kappa$ sont fixées à l'intérieur de la fonction. La résolution se fait via la fonction \texttt{meth\_N\_step} Le choix de la méthode est laissé à l'utilisateur, mais nous avons décidé d'effectuer la résolution avec la méthode de Runge-Kutta d'ordre 4, car c'est la méthode la plus précise parmi les 4 implémentées (ordre plus grand, donc erreurs de consistance locale plus petites). L'affichage des solutions se fait grâce à la fonction \texttt{matplotlib.pyplot.plot}.

\begin{figure}[h!]
        \centering
        \begin{subfigure}[b]{0.48\textwidth}
                \raggedleft
                \includegraphics[width=6cm]{../ressources/Malthus-Verhulst-1}
                \caption{$\gamma > 0$ et $N(0) < \kappa$}
                \label{fig:Malthus-Verhulst-1}
        \end{subfigure}
        \begin{subfigure}[b]{0.48\textwidth}
                \raggedright
                \includegraphics[width=6cm]{../ressources/Malthus-Verhulst-3}
                \caption{$\gamma > 0$ et $N(0) > \kappa$}
                \label{fig:Malthus-Verhulst-2}
        \end{subfigure}
        \caption{Solution des équations de Malthus et de Verhulst}
\end{figure}

\indent Les figure \ref{fig:Malthus-Verhulst-1} et \ref{fig:Malthus-Verhulst-2} montrent bien qu'une population dont l'évolution vérifie une équation de Verhulst possède une population d'équilibre égale à $\kappa$, qu'elle va atteindre en décrivant une courbe exponentielle décroissante ou une courbe logarithmique croissante, selon que la population de départ est supérieure ou inférieure à cette population d'équilibre. Pour ce qui est de l'équation de Verhulst, le $\gamma$ positif donne bien une population croissante de manière exponentielle.\\

\item On peut voir chacune des deux équations différentielles du modèle de Lotka-Volterra comme une équation de Malthus dont le coefficient $\gamma$ dépends de l'autre population. De plus, on observe qu'un $P$ important va avoir tendance à faire décroître $N$, et qu'un $N$ important va avoir tendance à faire croître $P$. Cela tend donc à montrer que $N(t)$ représente une population de proies, et $P(t)$ une population de prédateurs.\\

\item Nous avons implémenté la résolution des deux équations différentielles de Lotka-Volterra dans la fonction \texttt{resolution\_Lotka\_Volterra}. Les quatres constantes a, b, c et d sont fixées à 1, car nous nous nous intéressons uniquement aux conditions initiales. La résolution se fait toujours via la fonction \texttt{meth\_N\_step}, mais sur deux dimensions. En effet, la fonction opère sur le vecteur $$y(t) = \left( \begin{array}{c} N(t)\\ P(t)\\ \end{array} \right)$$
La fonction $F$ est toujours telle que $y'=F(y)$, la seule différence étant qu'elle prends en argument un vecteur à deux coordonnées. Toujours grâce à la fonction \texttt{plot}, les 2 fonctions solutions obtenues (proies + prédateurs) vont d'abord être affichées l'une en fonction de l'autre, puis en fonction du temps.\\
\indent Nous avons choisi trois points de départs différents : 10 fois plus de proies que de prédateurs, autant, ou 10 fois moins. Nous nommerons ces trois configurations respectivement les cas 1, 2 et 3.

\begin{figure}[h!]
        \centering
        \begin{subfigure}[b]{0.48\textwidth}
                \raggedleft
                \includegraphics[width=6cm]{../ressources/variations-Lotka-2}
                \caption{cas 2 : $N(0) = P(0)$}
                \label{fig:variations-Lotka-2}
        \end{subfigure}
        \begin{subfigure}[b]{0.48\textwidth}
                \raggedright
                \includegraphics[width=6cm]{../ressources/variations-Lotka-3}
                \caption{cas 3 : $P(0) = 10\times N(0)$}
                \label{fig:variations-Lotka-3}
        \end{subfigure}
        \caption{Solutions du modèle de Lotka-Volterra en fonction du temps}
\end{figure}

\indent Les résulats du cas 1 ne sont pas affichés car ils sont similaires à ceux du cas 2. Les solutions paraissent être périodiques, voir sinusoïdale dans les deux premiers cas. Les deux courbes semblent être les mêmes, mais décalées d'un intervalle de temps constant, avec la courbe des proies légèrement en avance. Cela paraît logique : un forte augmentation de proies entraîne une forte augmentation de prédateurs, entrainant à son tour une chute du nombre de proies, et donc du nombre de prédateurs, le tout se faisant avec un temps de latence à l'origine de ce décalage graphique.

\item Le tracé de la courbe des variations du couple $(N(t),P(t))$ se fait également grâce à la fonction \texttt{resolution\_Lotka\_Volterra}. Nous avons tracé cette courbe pour les cas 1 et 2. Pour chacun des 2 cas, nous avons en plus tracé les courbes correspondant à des conditions initiales proches de celles sélectionnées.

\begin{figure}[h!]
        \centering
        \begin{subfigure}[b]{0.48\textwidth}
                \raggedleft
                \includegraphics[width=6cm]{../ressources/Lotka-1}
                \caption{$N(0) = 10\times P(0)$}
                \label{fig:Lotka-1}
        \end{subfigure}
        \begin{subfigure}[b]{0.48\textwidth}
                \raggedright
                \includegraphics[width=6cm]{../ressources/Lotka-2}
                \caption{$N(0) = P(0)$}
                \label{fig:Lotka-2}
        \end{subfigure}
        \caption{Solutions du modèle de Lotka-Volterra\\ (abscisse : N(t), ordonnée : P(t))}
\end{figure}

\indent On observe sur les figures \ref{fig:Lotka-1} et \ref{fig:Lotka-2} que les courbes sont périodiques, et paraissent symétriques selon l'axe $P(t)=N(t)$. De plus, en partant du point le plus bas (minimum de $P$) d'une des deux figures, et en tournant dans le sens trigonométrique, on observe que la courbe correspond bien à un cycle proie-prédateur (augmentation du nombre de proies au début, entrainant une augmentation du nombre de prédateurs, puis diminution du nombre de proies, etc etc \dots).\\

\item Afin de calculer la période des solutions, nous avons décider d'étudier la représentation d'une des deux courbes en fonction du temps : la période correspond à l'intervalle de temps séparant deux pics consécutifs. Nous avons donc implémenté une fonction \texttt{calcul\_période} cherchant pour une courbe donnée, représentée par un tableau (suite de points), l'indice du premier maximum local, puis celui du second, pour finalement retourner la différence entre les deux. En multipliant ce nombre par l'intervalle de temps séparant deux points consécutifs, on obtient la période de la courbe en question.\\

\item Nous avons directement implémenté le tracé de différentes courbes avec des conditions initiales proches dans la fonction \texttt{resolution\_Lotka\_Volterra}.

\begin{figure}[h!]
	\centering   
	\includegraphics[width=7cm]{"../ressources/Lotka-local-1"}
	\caption{Comparaison locale de courbes à conditions initiales proches}
	\label{fig:comparaison-locale}
 \end{figure}

\indent On constate sur la figure \ref{fig:comparaison-locale} que les différentes courbes s'éloignent pour ensuite se rapprocher. Les courbes ne semblent pas diverger les unes par rapport aux autre.

\end{enumerate}
